/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.di0.sql.insert;

import br.di0.sql.ConexaoPostgres;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 *
 * @author di0
 */
public class InsertEstoque {

    public InsertEstoque() {
    }

    public static int inserir(String produto[]) {
        int rs = 0;

        //id_produto, saldo, dat_alt

        String query = "INSERT INTO estoque VALUES (" + produto[0] + "," + produto[1] + ",(SELECT current_timestamp))";

        ConexaoPostgres postgres = new ConexaoPostgres();
        try {
            Connection conexao = postgres.setConexao();
            Statement stm = conexao.createStatement();

            rs = stm.executeUpdate(query);
            System.out.println("Resultado de " + query + ":\n\t" + rs);

        } catch (SQLException ex) {
            System.out.println("Erro ao tentar inserir estoque");
            ex.printStackTrace();
        } finally {
            postgres.finalizaConexao();
        }
        return rs;
    }

    public static String[] localizar(String id_produto) {
        String[] produto = null;
        String validacaoID = "SELECT * FROM estoque_completo WHERE id_produto = " +
                id_produto;
        try {
            ConexaoPostgres postgres = new ConexaoPostgres();
            Connection conexao = postgres.setConexao();
            Statement stm = conexao.createStatement();

            try {
                ResultSet result = stm.executeQuery(validacaoID);
                boolean idValido = false;
                produto = new String[4];
                while (result.next()) {
                    idValido = true;
                    produto[0] = result.getString("descricao");
                    produto[1] = result.getString("saldo");
                    produto[2] = result.getString("dat_alt");
                    System.out.println("Produto [" + id_produto + " - " + produto[0] + "] " +
                            "encontrado no estoque");
                    break;
                }
                if (!idValido) {
                    System.out.println("Código [" + id_produto + "] não encontrado");
                    return null;
                }
            } catch (SQLException ex) {
                System.out.println("Erro ao tentar validar");
                ex.printStackTrace();
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }

        return produto;
    }

    public static int atualizar(String[] produto) {
        int rs = 0;

        String query = "UPDATE estoque SET saldo = " + produto[1] +
                ",dat_alt = (SELECT current_timestamp) WHERE id_produto = " +
                produto[0];

        try {
            ConexaoPostgres postgres = new ConexaoPostgres();
            Connection conexao = postgres.setConexao();
            Statement stm = conexao.createStatement();

            rs = stm.executeUpdate(query); //ATUALIZAR
            System.out.println("Resultado de " + query + ":\n\t" + rs);
        } catch (SQLException ex) {
            System.out.println("Erro ao tentar atualizar: " + query);
            ex.printStackTrace();
        }
        return rs;
    }

    /**
     * Retorna o saldo de um produto
     * @param produto o código do produto
     * @return o saldo do produto
     */
    public static int getEstoqueProduto(String produto) {
        String query = "SELECT saldo FROM estoque WHERE id_produto = " + produto;

        ConexaoPostgres postgres = new ConexaoPostgres();
        try {
            Connection conexao = postgres.setConexao();
            Statement stm = conexao.createStatement();

            ResultSet rs = stm.executeQuery(query);
            rs.next();
            String saldo = (String) rs.getString(1);
            return Integer.parseInt(saldo);
        } catch (SQLException ex) {
            System.out.println("Erro ao tentar inserir estoque");
            ex.printStackTrace();
        } finally {
            postgres.finalizaConexao();
        }
        return 0;
    }
}
